// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.ast.SQLExpr*;
// import com.alibaba.druid.sql.ast.SQLName*;
// import com.alibaba.druid.sql.ast.SQLReplaceable;
// import com.alibaba.druid.sql.ast.SQLStatementImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor*;
#pragma once
#include <string>
#include <list>
#include "../SQLStatementImpl.h"
#include "SQLDropStatement.h"

class SQLExprTableSource;
class SQLName;
class SQLASTVisitor;
class SQLDDLStatement;

class SQLDropTableSpaceStatement
 : virtual public SQLStatementImpl, 
 virtual public SQLDropStatement,
  virtual public SQLReplaceable
{
public:
  SQLName_ptr name;
  BOOL_ptr ifExists;
  SQLExpr_ptr engine;

  SQLDropTableSpaceStatement();

  SQLDropTableSpaceStatement(DbType_ptr   dbType);
  SHAREDOBJECT(SQLDropTableSpaceStatement);

  void accept0(SQLASTVisitor_ptr visitor);

  SQLName_ptr getName();

  void setName(SQLName_ptr x);

  string_ptr  getTableSpaceName();

  SQLExpr_ptr getEngine();

  void setEngine(SQLExpr_ptr x);

  BOOL_ptr isIfExists();
  void setIfExists(BOOL_ptr ifExists);

  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);

  SQLDDLStatement::DDLObjectType getDDLObjectType();
};
